"""
简单继承  AutoService ，实现传入自己的密码等参数.
流程概要：
login -> getVerCode() -> getBaseInfo()

使用场景：
QQ登录
比如有的时候QQ就是需要先输入账号密码，然后如果是异地登陆，还需要收个验证码
"""

import os
import sys

# 切换目录到上级目录，引入AutoService【正式情况下请把脚本放在上级目录，就可以不用这两句啦】
if not os.path.exists("core/autoService.py"):
    sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from core.autoService import AutoService


class FirstAutoService(AutoService):
    # 取消自动读取保存变量
    __autoLoadEnv__ = False

    # 如果不取消，将会把以storage_开头的变量保存到data下。
    def init(self, **kwargs):
        # 这里是关键啦，把变量写入到对象下面
        self.passwd = kwargs["passwd"]
        # 这里return 父类的init方法返回值，可以实现链调用。
        return super(FirstAutoService, self).init(**kwargs)

    def sendSms(self):
        super(FirstAutoService, self).sendSms()
        """
            调用API发送 验证码流程，这里省略
        """
        self.log("已经发送了验证码")

    def login(self):

        self.log(f"手机号为:{self.getNum()},密码为:{self.passwd}")
        """
            这里就写登录流程啦
        """

        #这里就需要一个判断，是否需要发送验证码验证，需要的话，九八sendSms和getVerCode放if里面，包括验证码发送流程。
        #if needVerfyPhone:
        self.sendSms()
        code = FirstAutoService.getVerCode()
        """
            请用电脑QQ模拟一条验证码发送给手机QQ，让手机有个弹窗消息，否则将会一直卡在上一步，直至60s的超时
        """

        self.log(f"验证码为:{code}")
        """
        这里就是把验证码传入登录流程啦
        """

        self.log("登录成功")

    # 定义一个完整的登录流程，一定要有这个习惯。
    def flow_login(self):
        self.login()


if __name__ == '__main__':
    # 调用init方法，传入必须要的phoneNum，然后就调用登录流程啦
    FirstAutoService().init(phoneNum="123456",passwd="123456789").flow_login()
